package co.edu.uniandes.sd.mundo;

import java.io.Serializable;
import java.util.ArrayList;

public class Estado implements Serializable
{
	private static final long serialVersionUID = 59564209538108565L;
	
	private ArrayList<String> estadosArchivos;
	
	private ArrayList<String> estadosDescargas;
	
	private boolean guardado;
	
	private long time;

	private ModificacionArchivo token;
	
	public Estado()
	{
		estadosArchivos = new ArrayList<String>();
		estadosDescargas = new ArrayList<String>();
		guardado = false;
		time = 0;
		token = null;
	}
	
	public void guardar(long timeP)
	{
		guardado = true;
		time = timeP;
	}
	
	public void agregarEstadoArchivo(String estadoArchivo)
	{
		estadosArchivos.add(estadoArchivo);
	}
	
	public void agregarEstadoDescarga(String estadoDescarga)
	{
		estadosDescargas.add(estadoDescarga);
	}

	public void eliminarEstadoDescarga(String identificador) 
	{
		boolean termino = false;
		for(int i=0; i<estadosDescargas.size()&&!termino; i++)
		{
			if(estadosDescargas.get(i).startsWith(identificador))
			{
				estadosDescargas.remove(i);
				termino = true;
			}
		}
	}
	
	public long darTiempo()
	{
		return time;
	}
	
	public boolean estaGuardado()
	{
		return guardado;
	}

	public void agregarToken(ModificacionArchivo modificacion)
	{
		token = modificacion;
	}
	
	public String aplanarArchivos()
	{
		String rta = "";
		for(int i=0; i<estadosArchivos.size(); i++)
		{
			rta+=estadosArchivos.get(i)+"\n";
		}
		return rta;
	}
	
	public String aplanarDescargas()
	{
		String rta = "";
		for(int i=0; i<estadosDescargas.size(); i++)
		{
			rta+=estadosDescargas.get(i)+"\n";
		}
		return rta;
	}
	
	public String aplanarToken()
	{
		if(token!=null)
			return token.toString();
		else
			return "N/A";
	}
	
	public String toString()
	{
		return "##Archivos:\n"+aplanarArchivos()+
		"##Descargas:\n"+aplanarDescargas()+
		"##Token:\n"+aplanarToken();
	}
}
